package main

import (
	"fmt"
	"net"
	"net/rpc"
)

type Hello struct {
}

func (h Hello) SayHello(req string, res *string) error {
	*res = "你好" + req
	return nil
}

func main() {
	//1.注册rpc服务
	err := rpc.RegisterName("Hello", new(Hello))
	if err != nil {
		fmt.Println(err)
	}
	//2.监听端口
	listener, err := net.Listen("tcp", "127.0.0.1:8800")
	if err != nil {
		fmt.Println(err)
	}
	//3.最后退出
	defer listener.Close()
	//4.建立连接
	for {
		fmt.Println("开始建立连接")
		conn, err := listener.Accept()
		if err != nil {
			fmt.Println(err)
		}
		//5.服务绑定
		rpc.ServeConn(conn)
	}
	//json编码的rpc服务
	//conn2, err := net.Dial("tcp", "127.0.0.1:8080")
	//if err != nil {
	//	fmt.Println(err)
	//}
	//client2 := rpc.NewClientWithCodec(jsonrpc.NewClientCodec(conn2))
}
